Competitions have been held for the development of an asset, such as essays, music, computer software, and so on, and may be held for the development of any type of intellectual work or work product.
A larger work may be divided up into a number of smaller pieces, and competitions held for the development of those pieces. For example, a software program may be divided up into components, and competitions held for the development of each of the components. Likewise, the development of each component may be divided into design tasks and coding tasks, and a contest held for the design of the component, and another contest held for the coding of the component. A competition may be held for the assembly of such components into an application. A competition may be held for the identification and/or repair of faults in a software program. A competition may be held for the extension or addition of features to an existing program.
In some types of competitions, it can be beneficial to require or allow contestants to use particular tools (e.g., design tools, build programs, conversion tools, etc.), content (e.g., fonts, graphic images, text content, artifacts, etc.), and/or data (e.g., databases, data marts, spreadsheets, data streams). It may be difficult, unwieldy, burdensome, or costly to provide copies of these tools, content, or data to contestants. It also may be desirable to limit access and maintain control over such tools, content and assets.
In some software competitions, it may be necessary or desirable to have contestants use a particular development environment. Differences between a competition development environment and the intended end use development environment may result in undesired artifacts or errors. For example, for an application that is already developed, a competition may be held to add or change features of the program. There may be particular build or development tools and/or libraries used to build and/or run the software program. These tools/libraries may need to be configured in a particular manner.
In some software competitions, it may be necessary or desirable to have contestants use a particular testing environment. Differences between a competition testing environment and the intended production environment may result in undesired artifacts or errors. For example, in a competition to assemble an application from components, the assembled application may be required to work with specific middleware, database, and operating system, as well as other software. Even more, a specific configuration may be used in production, and if a different set of software and/or configurations for the software are used, errors or artifacts may become apparent in the production environment that were not evident in the contestant's testing environment.
It can be difficult and time-consuming for contestants to set up and configure their development and/or test environments prior to or during a competition. The burden of such set up and configuration can be a barrier to participation in a competition. Moreover, if done improperly, errors in set up or configuration can result in problems, which may be evident only after delivery or production.